package main

import "fmt"

//func updateSlice(s []int) {
//	s[0] = 100
//}

func main() {
	//arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
	//// 计算机中 一般是 半开半闭区间 包括 2 不包括 6
	//fmt.Println("arr[2:6] =", arr[2:6]) //2,3,4,5
	//fmt.Println("arr[:6] =", arr[:6]) // 0,1,2,3,4,5
	//s1 :=  arr[2:]
	//fmt.Println("arr[2:] =", s1) // 2,3,4,5,6,7
	//s2 := arr[:]
	//fmt.Println("arr[:] =", s2) // 0, 1, 2, 3, 4, 5, 6, 7
	//
	//// Slice 是 对 arr 的视图
	//fmt.Println("s1::",s1)
	//updateSlice(s1)
	//fmt.Println("s1::",s1)
	//fmt.Println("s2::",s2)
	//updateSlice(s2)
	//fmt.Println("s2::",s2)

	//	slice 本身没有数据 是对底层 arr 的 view

	//Slice 扩展

	arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}

	s1 := arr[2:6] // 2,3,4,5
	s2 := s1[3:5]  // 5,6
	//s1[4]  报错
	//fmt.Println(s1, s2)

	//slice 可以向后扩展
	//s[i] 不可以超过 Len(s)
	//	向后扩展不能超过底层数组 cap(s)
	fmt.Println(arr)
	fmt.Printf("s1=%v , len(s1) = %d , cap(s1) = %d \n\n", s1, len(s1), cap(s1))
	fmt.Printf("s2=%v , len(s2) = %d , cap(s2) = %d \n\n", s2, len(s2), cap(s2))
}
